// 路由的拦截处理
import router from "./router";
import useUserStore from "./store/user";
import { message } from "ant-design-vue";
import NProgress from "nprogress";
import "nprogress/nprogress.css"
// 1.判断 
router.beforeEach((to,from,next)=>{
    NProgress.start();
    // console.log(to,from,next);
    // 除过 登录页面
if (to.path === "/login") {
    next();
} else {
const userStore = useUserStore();
     // 1.判断是否登陆了-token
if (to.path === "/login") {
    next();
    
} else {
    if (userStore.token) {
// 用户信息【用户 角色 状态 】是否存在
if (userStore.userInfo) {
    // 存在
    if (!userStore.userInfo.status) {
        message.warning("当前用户信息已被禁用，请联系管理员");
        next("/login");
    }else if(!userStore.userInfo.roles || userStore.userInfo.roles.length === 0){
    // 没有分配角色-只能访问公共信息
    message.warning("当前用户，暂无角色！！！");
    next();
    }else{
        next();
    }



}else{
    // 不存在 ----重新发起请求
    userStore.getUserInfo().then((res)=>{
    // 拿到结果放行
    next();
    })
    .catch((e)=>{
        // 发完请求获取不到
        message.warning("无法获取用户信息");
        next("/login");
        console.log(e);
    })

}


    next();
    } else {
    message.warning("暂无权限");
    // 去登录页面
    next("/login");
        
    }
}

}
   
});
router.afterEach(()=>{
    NProgress.done();
})